package jwj8508.j2ee.advanced;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 서블릿 클래스로 HTML 코드 출력하기
// 서블릿 클래스로 브라우저를 통해 HTML 코드를 출력하려면
// 신경써야할 점이 한 둘이 아님
// 1. 출력할 유형을 setContentType으로 지정
// 2. 출력할 HTML 코드는 getWriter 메서드 이용
// 3. 소스가 수정되면 서블릿 클래스를 다시 컴파일해야 함
// 4. 비지니스 로직과 HTML 출력코드가 같이 있을 경우 소스코드의 가독성이 떨어져 유지보수가 힘들어짐
// 해결책 : 모델 2 개발방식을 이용

@WebServlet("/J04PostvsGet")
public class J04PostvsGet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	// 로그인폼을 서블릿으로 작성함
	public void showSimpleForm(HttpServletResponse res) throws IOException {
		res.setContentType("text/html; charset=UTF-8");
		PrintWriter out = res.getWriter();		
		out.print("<html><head><title>");
		out.print("로그인</title></head>");
		out.print("<body><h1>로그인하세요</h1>");
		out.print("<form method='post'>");
		out.print("<div>아이디 : <input type='text' name='uid' /></div>");
		out.print("<div>비밀번호 : <input type='password' name='pwd' /></div>");
		out.print("<button type='submit'>로그인</button>");
		out.print("</form></body></html>");
	}

	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		showSimpleForm(res);
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		String uid = req.getParameter("uid");
		String pwd = req.getParameter("pwd");
		
		if (uid.equals("123") && pwd.equals("123")) {
			res.getWriter().write("Login 성공!!");
		} else {
			res.getWriter().write("Login Fail!!");
		}
	}

}
